#include "../inc/strpro.h"
#include "string.h"

unsigned char str[32] = {0};


/* --------------------------------------------------------------------------*/
/**
 * @Synopsis  得到字符串占用字节长度
 *
 * @Param p 字符串
 *
 * @Returns   长度,不计算\0
 */
/* --------------------------------------------------------------------------*/
unsigned int get_str_byte_length(unsigned char *p)
{
	unsigned int len = 0;
	while (*p != '\0') {
			p ++;
			len ++;
	}
	return len;
}

/* --------------------------------------------------------------------------*/
/**
 * @Synopsis  用空格补全字符串长度到单行最大显示长度
 *
 * @Param s 要补全的字符串
 * @Param com_len 要补全到的长度，忽略'/0'，几个字节几个长度
 *
 * @Returns   补全结果
 */
/* --------------------------------------------------------------------------*/
unsigned char *get_erase_complete_str(unsigned char *s, unsigned char com_len)
{
	unsigned char i;
	unsigned char len;
	len = strlen(s); 		//当前字符串长度
	if(com_len > len) 					//当前不够则补空格
	{
		com_len = com_len - len;
		for(i = 0; i<com_len; i++)
		{
			s[len+i] = ' '; 
			s[len+i+1] = '\0';
		}
		return &s[0];
	}
	else 								//当前超过则删除
	{
		for(i = com_len; i<len; i++)
		{
			s[i] = '\0'; 
		}
		return &s[0];
	}
}

/****************************************************************************
*函数名：sprintf_to_str
*输  入：a：输入值
		 _o: 输出到字符串格式 _0B:2进制，_0D:10进制，_0h:16进制
*输  出：s：返回值，数组

*功  能：把一个整形类型转换到字符串s并添加结束符
****************************************************************************/
/* --------------------------------------------------------------------------*/
/**
 * @Synopsis  把一个数a按指定格式_o输出到指定字符串s
 *
 * @Param a 	输入的
 * @Param s 	保存字符串数组
 * @Param _o 	格式
				_0B 2
				_0D 10
				_0H 16
				_0b 2
				_0d 10
				_0h 16
 *
 * @Returns   返回字符串指针
 */
/* --------------------------------------------------------------------------*/
unsigned char *sprintf_to_str(long a, unsigned char *s, unsigned char _o)
{
	unsigned char length = 0;
	unsigned char cnt = 0;
	long tmp;
	tmp = a;
	if (!tmp) //为0则返回
	{
		s[0] = '0';
		s[1] = '\0';
		return &s[0];
	}
	while (tmp) //判断长度
	{
		length++;
		tmp = tmp / _o;
	}
	s[length] = '\0';
	while (length) //按长度输出
	{
		length--;
		if (_o != _0H) //非16进制
		{
			s[length] = a % _o + 48;
		}
		else //16进制
		{
			tmp = a % _o;
			if (tmp < 10)
				s[length] = a % _o + 48;
			else
				s[length] = a % _o + 55;
		}
		a /= _o;
	}
	return &s[0];
}

unsigned char* RTC_add_zeroTostr(unsigned char *s, unsigned char *c)
{
	unsigned tmp;
	tmp = get_str_byte_length(s);
	if(tmp == 2)
	{
		return s;
	}
	s[2] = '\0';
	s[1] = s[0];
	if(*c == '0')
		s[0] = '0';
	if(*c == ' ')
		s[0] = ' ';
	return s;
}


